/*
First time? Check out the tutorial game:
https://sprig.hackclub.com/gallery/getting_started

@title: Paint98
@author: NullClock
@description: None
@tags: []
@addedOn: 2025-00-00
*/


let currentColor = "p";
const drawnSprites = [];

const legends = {
  black: ["p", bitmap`
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000`],
  red: ["r", bitmap`
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333`],
  green:  ["g", bitmap`
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444`],
  blue: ["b", bitmap`
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555`],
  cyan: ["c", bitmap`
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777`],
  yellow: ["y", bitmap`
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666`],
  purple: ["u", bitmap`
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH`],
  brown: ["t", bitmap`
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC`],
  select: ["s", bitmap`
7777777777777777
7777777777777777
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
7777777777777777
7777777777777777`],
  letterC: ["1", bitmap`
................
.....000000000..
...00000000000..
...00...........
..00............
..00............
..00............
..00............
..00............
..00............
..00............
..00............
...00...........
...00000000000..
.....000000000..
................`],
  letterL: ["2", bitmap`
................
................
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
....00..........
....00000000....
......000000....`],
  letterE: ["3", bitmap`
................
.......000......
......000000....
.....000..000...
....000....00...
....00......00..
....0000000000..
...0000000000...
...000..........
....00..........
....000.....00..
.....000...000..
......0000000...
........0000....
................
................`],
  letterA: ["4", bitmap`
................
................
...00000000.....
...0000000000...
..........000...
...........000..
............00..
........000000..
....0000000000..
...00000000.00..
...000......00..
...000......00..
....000.....00..
.....000000000..
......0000000...
................`],
  letterR: ["5", bitmap`
................
...00...........
...00...........
...00.0000......
...000000000....
...000...000....
...00......0....
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
................`],
  letterB: ["6", bitmap`
................
................
...00...........
...00...........
...00...........
...00...........
...00...........
...00.0000......
...00000000.....
...000...000....
...00.....00....
...00....000....
...00000000.....
...0000000......
................
................`],
  letterI: ["7", bitmap`
................
......00........
......00........
................
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
................
................`],
  letterG: ["8", bitmap`
................
......00000.....
.....0000000....
....00....00....
....00....00....
....00....00....
....00....00....
....00000000....
.....0000000....
..........00....
..........00....
..........00....
.........000....
....0000000.....
....000000......
................`],
  letterS: ["9", bitmap`
................
................
................
.....0000000....
....00000000....
...000..........
...00...........
...00...........
...00000000.....
....00000000....
..........00....
..........00....
....00000000....
....0000000.....
................
................`],
  letterM: ["0", bitmap`
................
................
................
....000...000...
...00000.00000..
..000.00000.00..
..00...00...00..
..00...00...00..
..00........00..
..00........00..
..00........00..
..00........00..
..00........00..
..00........00..
................
................`]
}

setLegend(
  ["s", bitmap`
7777777777777777
7777777777777777
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
77............77
7777777777777777
7777777777777777`],
  ["p", bitmap`
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000`],
  ["r", bitmap`
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333
3333333333333333`],
  ["g", bitmap`
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444
4444444444444444`],
  ["b", bitmap`
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555
5555555555555555`],
  ["c", bitmap`
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777
7777777777777777`],
  ["y", bitmap`
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666
6666666666666666`],
  ["u", bitmap`
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH`],
  ["t", bitmap`
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCC`],
  ["1", bitmap`
................
.....000000000..
...00000000000..
...00...........
..00............
..00............
..00............
..00............
..00............
..00............
..00............
..00............
...00...........
...00000000000..
.....000000000..
................`],
  ["2", bitmap`
................
................
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
....00..........
....00000000....
......000000....`],
  ["3", bitmap`
................
.......000......
......000000....
.....000..000...
....000....00...
....00......00..
....0000000000..
...0000000000...
...000..........
....00..........
....000.....00..
.....000...000..
......0000000...
........0000....
................
................`],
  ["4", bitmap`
................
................
...00000000.....
...0000000000...
..........000...
...........000..
............00..
........000000..
....0000000000..
...00000000.00..
...000......00..
...000......00..
....000.....00..
.....000000000..
......0000000...
................`],
  ["5", bitmap`
................
...00...........
...00...........
...00.0000......
...000000000....
...000...000....
...00......0....
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
...00...........
................`],
  ["6", bitmap`
................
................
...00...........
...00...........
...00...........
...00...........
...00...........
...00.0000......
...00000000.....
...000...000....
...00.....00....
...00....000....
...00000000.....
...0000000......
................
................`],
  ["7", bitmap`
................
......00........
......00........
................
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
......00........
................
................`],
  ["8", bitmap`
................
......00000.....
.....0000000....
....00....00....
....00....00....
....00....00....
....00....00....
....00000000....
.....0000000....
..........00....
..........00....
..........00....
.........000....
....0000000.....
....000000......
................`],
  ["9", bitmap`
................
................
................
.....0000000....
....00000000....
...000..........
...00...........
...00...........
...00000000.....
....00000000....
..........00....
..........00....
....00000000....
....0000000.....
................
................`],
  ["0", bitmap`
................
................
................
....000...000...
...00000.00000..
..000.00000.00..
..00...00...00..
..00...00...00..
..00........00..
..00........00..
..00........00..
..00........00..
..00........00..
..00........00..
................
................`]
);

// setSolids([])

let level = 0;
const levels = [
  map`
s................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
.................
ppppppppppppppppp
......12345......
r.g.b.y.u.c.t.p..`
]

setMap(levels[level])

// const reservedAreas = [
//   "[0, 19]",
//   "[2, 19]",
//   "[4, 19]",
//   "[6, 19]",
//   "[8, 19]",
//   "[10, 19]",
//   "[12, 19]",
//   "[14, 19]",
//   "[6, 18]",
//   "[7, 18]",
//   "[8, 18]",
// ];

const areaActions = {
  "14, 19": () => {
    currentColor = "p"
  },
  "12, 19": () => {
    currentColor = "t"
  },
  "10, 19": () => {
    currentColor = "c"
  },
  "8, 19": () => {
    currentColor = "u"
  },
  "6, 19": () => {
    currentColor = "y"
  },
  "4, 19": () => {
    currentColor = "b"
  },
  "2, 19": () => {
    currentColor = "g"
  },
  "0, 19": () => {
    currentColor = "r"
  },
  "6, 18": () => {
    drawnSprites.forEach((xyArray) => {
      clearTile(xyArray[0], xyArray[1]);
    });
  },
  "7, 18": () => {
    drawnSprites.forEach((xyArray) => {
      clearTile(xyArray[0], xyArray[1]);
    });
  },
  "8, 18": () => {
    drawnSprites.forEach((xyArray) => {
      clearTile(xyArray[0], xyArray[1]);
    });
  },
  "9, 18": () => {
    drawnSprites.forEach((xyArray) => {
      clearTile(xyArray[0], xyArray[1]);
    });
  },
  "10, 18": () => {
    drawnSprites.forEach((xyArray) => {
      clearTile(xyArray[0], xyArray[1]);
    });
  },
}

onInput("w", () => {
  getFirst(legends.select[0]).y -= 1;
});

onInput("s", () => {
  getFirst(legends.select[0]).y += 1;
})

onInput("d", () => {
  getFirst(legends.select[0]).x += 1;
});

onInput("a", () => {
  getFirst(legends.select[0]).x -= 1;
});

function isReservedArea(x, y) {
  // return reservedAreas.includes(`[${x}, ${y}]`);
  return (y == 18 || y == 19 || y == 17);
}

function hasAction(x, y) {
  return (`${x}, ${y}` in areaActions);
}

onInput("i", () => {
  const spriteX = getFirst(legends.select[0]).x;
  const spriteY = getFirst(legends.select[0]).y;

  if (hasAction(spriteX, spriteY)) areaActions[`${spriteX}, ${spriteY}`]();
  if (isReservedArea(spriteX, spriteY)) return;

  clearTile(spriteX, spriteY);
  addSprite(spriteX, spriteY, "s");
  addSprite(spriteX, spriteY, currentColor);
  drawnSprites.push([spriteX, spriteY]);
});

afterInput(() => {
  console.log(getFirst(legends.select[0]).x, getFirst(legends.select[0]).y);
});